home *** CD-ROM | disk | FTP | other *** search
- { XOR-BASE64 Encrypt Filename against a String Key }
-
- const
- KEY = 'My Secret Key'; // Set your key!
- DECODE = False; // "True" or "False"
-
- function XorEnDeCrypt(const S: String): String;
- var
- I, IK, Code: Integer;
- begin
- IK := 1;
- Result := '';
- for I := 1 to Length(S) do
- begin
- if IK > Length(KEY) then IK := 1;
- Code := (Ord(S[I]) xor Ord(KEY[IK]));
- Result := Result + Chr(Code);
- IK := IK + 1;
- end;
- end;
-
- procedure ReplaceChar(var S: String; Find, Replace: Char);
- var
- I: Integer;
- begin
- for I:=1 to Length(S) do
- if S[I] = Find then
- S[I] := Replace;
- end;
-
- function Encrypt(const S: WideString): String;
- begin
- Result := UTF8Encode(S);
- Result := XorEnDeCrypt(Result);
- Result := Base64Encode(Result);
- ReplaceChar(Result, '/', '=');
- end;
-
- function Decrypt(const S: String): WideString;
- var
- Temp: String;
- begin
- Temp := S;
- ReplaceChar(Temp, '=', '/');
- Temp := Base64Decode(Temp);
- Temp := XorEnDeCrypt(Temp);
- Result := UTF8Decode(Temp);
- end;
-
- begin
- if DECODE then
- FileName := Decrypt(FileName)
- else
- FileName := Encrypt(FileName);
- end.